package com.eds.dao;

import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;

/*
* redis操作接口
* */
public interface RedisDao<T> {
    //1. 存储数据
    void set(String key,T value);
    //2. 存储数据并设置有效期
    void set(String key, T value, int expire, TimeUnit timeUnit);
    //3. 判断key是否存在，不存在则存储
    boolean setIfAbsent(String key,T value);
    boolean setIfAbsent(String key,T value, int expire, TimeUnit timeUnit);
    //4. 获取数据
    T get(String key);
    //5. 设置key的有效期
    boolean expire(String key, int expire, TimeUnit timeUnit);
    //6. 获取key的有效期的剩余时间
    Long getExpire(String key);
    //7. 删除key
    boolean del(String key);
    //8. 判断key是否存在
    boolean exists(String key);
    //9. 存储list数据接口的数据daoRedis中
    void leftPushAll(String key, Collection<T> values);
    //10. 获取List结构中的数据
    List<T> range(String key, long start, long end);
    //11. 获取hash结构中的数据
    List<T> hgetAll(String redisKey,String fieldKey);
    //12.存储数据到Hash结构
    void putObject(String redisKey,String fieldKey,List<T> value);
    //13. 删除Hash结构中的数据
    void deleteHash(String redisKey,String fieldKey);
    //14. 获取Hash结构中的Map
    Map<String,List<T>> getHash(String redisKey);
    //15.存储数据到Hash结构
    void addAll(String redisKey,Map<String,List<T>> map);
}
